/**
 * 反射地板顶点着色器
 * 使用 CustomShaderMaterial (CSM) 扩展 Three.js 材质
 * 为片元着色器提供 UV 和世界位置
 */

// Shadertoy 风格的 uniform
uniform float iTime;        // 经过的时间
uniform vec2 iResolution;   // 视口分辨率
uniform vec2 iMouse;        // 鼠标位置

// 传递给片元着色器的变量
varying vec2 vUv_;           // UV 纹理坐标
varying vec4 vWorldPosition; // 世界空间位置

void main(){
    // 获取顶点位置
    vec3 p=position;
    
    // CSM 变量：修改顶点位置（这里不修改）
    csm_Position=p;
    
    // 传递 UV 坐标
    vUv_=uv;
    // 计算并传递世界空间位置（用于反射计算）
    vWorldPosition=modelMatrix*vec4(p,1);
}